name: WINDOW_DIMMER_EFFECT_NAME,
enabled: false,
});
- this._enabled = true;
}
- _syncEnabled() {
+ _syncEnabled(dimmed) {
let animating = this.actor.get_transition(`@effects.${this.name}.brightness`) !== null;
- let dimmed = this.brightness.red != 127;
- this.enabled = this._enabled && (animating || dimmed);
- }
- setEnabled(enabled) {
- this._enabled = enabled;
- this._syncEnabled();
+ this.enabled = Meta.prefs_get_attach_modal_dialogs() && (animating || dimmed);
}
setDimmed(dimmed, animate) {
this.actor.ease_property(`@effects.${this.name}.brightness`, color, {
mode: Clutter.AnimationMode.LINEAR,
duration: (dimmed ? DIM_TIME : UNDIM_TIME) * (animate ? 1 : 0),
- onComplete: () => this._syncEnabled(),
+ onStopped: () => this._syncEnabled(dimmed),
});
- this._syncEnabled();
+ this._syncEnabled(dimmed);
}
});
function getWindowDimmer(actor) {
- let enabled = Meta.prefs_get_attach_modal_dialogs();
let effect = actor.get_effect(WINDOW_DIMMER_EFFECT_NAME);
- if (effect) {
- effect.setEnabled(enabled);
- } else if (enabled) {
+ if (!effect) {
effect = new WindowDimmer();
actor.add_effect(effect);
}